const axios = require('axios');

// 配置
const BASE_URL = 'http://localhost:3000/api';
const JWT_TOKEN = 'your_jwt_token_here'; // 替换为实际的JWT token

// 设置请求头
const headers = {
  'Authorization': `Bearer ${JWT_TOKEN}`,
  'Content-Type': 'application/json'
};

// 测试VIP用户的积分显示
async function testVipPointsDisplay() {
  try {
    console.log('👑 测试VIP用户的积分显示...\n');
    
    // 1. 测试短剧详情接口（VIP用户积分应为0）
    console.log('1️⃣ 测试短剧详情接口...');
    const detailResponse = await axios.get(
      `${BASE_URL}/shorts/1`,
      { headers }
    );
    
    if (detailResponse.data && detailResponse.data.chapters) {
      console.log('✅ 短剧详情获取成功');
      detailResponse.data.chapters.forEach((chapter, index) => {
        console.log(`   章节${index + 1}: ${chapter.title} - 积分: ${chapter.points}`);
      });
    }
    
    console.log('\n' + '─'.repeat(50));
    
    // 2. 测试随机短剧接口（VIP用户积分应为0）
    console.log('2️⃣ 测试随机短剧接口...');
    const randomResponse = await axios.get(
      `${BASE_URL}/shorts/random?count=2`,
      { headers }
    );
    
    if (randomResponse.data && randomResponse.data.length > 0) {
      console.log('✅ 随机短剧获取成功');
      randomResponse.data.forEach((short, shortIndex) => {
        console.log(`   短剧${shortIndex + 1}: ${short.title}`);
        if (short.chapters) {
          short.chapters.forEach((chapter, chapterIndex) => {
            console.log(`     章节${chapterIndex + 1}: ${chapter.title} - 积分: ${chapter.points}`);
          });
        }
      });
    }
    
    console.log('\n' + '─'.repeat(50));
    
    // 3. 测试章节视频接口（验证VIP优惠逻辑）
    console.log('3️⃣ 测试章节视频接口（验证VIP优惠）...');
    const videoResponse = await axios.get(
      `${BASE_URL}/shorts/chapter/video/1/1`,
      { headers }
    );
    
    if (videoResponse.data) {
      const data = videoResponse.data;
      console.log('✅ 章节视频信息获取成功');
      console.log(`   章节: ${data.title}`);
      console.log(`   原积分: ${data.originalPoints}`);
      console.log(`   有效积分: ${data.effectivePoints}`);
      console.log(`   VIP用户: ${data.isVip ? '是' : '否'}`);
      console.log(`   免费: ${data.isFree ? '是' : '否'}`);
      console.log(`   消息: ${data.message}`);
      
      // 验证VIP逻辑
      if (data.isVip && data.effectivePoints === 0) {
        console.log('🎉 VIP特权验证成功：积分已优惠为0！');
      } else if (data.isVip && data.effectivePoints > 0) {
        console.log('⚠️  VIP特权验证失败：积分未优惠');
      } else if (!data.isVip) {
        console.log('ℹ️  普通用户：按原积分计算');
      }
    }
    
    return true;
  } catch (error) {
    console.error('❌ 测试失败:', error.response?.data || error.message);
    
    if (error.response?.status === 401) {
      console.log('💡 提示: 请检查JWT token是否有效');
    } else if (error.response?.status === 400) {
      console.log('💡 提示: 请检查短剧ID和章节ID是否正确');
    }
    
    return false;
  }
}

// 测试普通用户（无token）的积分显示
async function testNormalUserPointsDisplay() {
  try {
    console.log('\n👤 测试普通用户的积分显示...\n');
    
    // 1. 测试短剧详情接口（普通用户显示原积分）
    console.log('1️⃣ 测试短剧详情接口（无认证）...');
    const detailResponse = await axios.get(`${BASE_URL}/shorts/1`);
    
    if (detailResponse.data && detailResponse.data.chapters) {
      console.log('✅ 短剧详情获取成功（普通用户）');
      detailResponse.data.chapters.forEach((chapter, index) => {
        console.log(`   章节${index + 1}: ${chapter.title} - 积分: ${chapter.points}`);
      });
    }
    
    console.log('\n' + '─'.repeat(50));
    
    // 2. 测试随机短剧接口（普通用户显示原积分）
    console.log('2️⃣ 测试随机短剧接口（无认证）...');
    const randomResponse = await axios.get(`${BASE_URL}/shorts/random?count=2`);
    
    if (randomResponse.data && randomResponse.data.length > 0) {
      console.log('✅ 随机短剧获取成功（普通用户）');
      randomResponse.data.forEach((short, shortIndex) => {
        console.log(`   短剧${shortIndex + 1}: ${short.title}`);
        if (short.chapters) {
          short.chapters.forEach((chapter, chapterIndex) => {
            console.log(`     章节${chapterIndex + 1}: ${chapter.title} - 积分: ${chapter.points}`);
          });
        }
      });
    }
    
    return true;
  } catch (error) {
    console.error('❌ 普通用户测试失败:', error.response?.data || error.message);
    return false;
  }
}

// 主测试函数
async function runVipPointsTests() {
  console.log('🚀 开始测试VIP用户积分显示功能...\n');
  
  if (JWT_TOKEN === 'your_jwt_token_here') {
    console.log('⚠️  请先设置有效的JWT token');
    console.log('   在脚本中修改 JWT_TOKEN 变量的值\n');
    return;
  }
  
  // 1. 测试VIP用户积分显示
  const vipTestResult = await testVipPointsDisplay();
  
  console.log('\n' + '='.repeat(60));
  
  // 2. 测试普通用户积分显示
  const normalTestResult = await testNormalUserPointsDisplay();
  
  console.log('\n✨ VIP积分显示测试完成！');
  console.log('\n💡 测试要点:');
  console.log('   - VIP用户的章节积分应显示为0');
  console.log('   - 普通用户显示原积分');
  console.log('   - 短剧详情和随机短剧接口都应支持VIP优惠');
  console.log('   - 章节视频接口应返回原积分和有效积分');
  
  if (vipTestResult && normalTestResult) {
    console.log('\n🎉 所有测试通过！VIP积分优惠功能正常！');
  } else {
    console.log('\n⚠️  部分测试失败，请检查接口实现');
  }
}

// 运行测试
runVipPointsTests().catch(console.error); 